<!DOCTYPE html>
<html>

<head>
  <title>Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/blog/why-graalvm-19-2/" />
  <meta property="og:title" content="Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/blog/why-graalvm-19-2/">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="post">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="active">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <div class="post-page grid-wrapper">
  <div class="width-8-12 width-12-12-m doc-content">
    <div class="grid-wrapper">
      <div class="width-12-12">
        <p>
          <a href="/blog"><i class="fas fa-angle-left"></i> Back to all posts</a>
        </p>
      </div>
      <div class="width-12-12">
        <div class="post-date">
          December 18, 2019 
          
            <span class="tags"><a href="/blog/tag/announcement">#announcement</a><a href="/blog/tag/graalvm">#graalvm</a></span>
          
        </div>
        <h1 class="post-title">Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why</h1>
        <div class="grid-wrapper">
          <div class="width-8-12 width-12-12-m byline-wrapper">
            
            
              <img class="headshot" src="https://www.gravatar.com/avatar/55ac8578d32a08d68b078e47f29105b0">
            
            <p class="byline">By Emmanuel Bernard</p>
          </div>
          <div class="width-12-12">
              <div class="paragraph">
<p>One of the highly anticipated features of Quarkus 1.1.0.CR1 was the GraalVM 19.3 support.
GraalVM 19.3 changes quite a lot of things (JDK 11 preview etc) and due to the deep integration between Quarkus and GraalVM, it was an all-or-nothing update for us as we couldn&#8217;t support both GraalVM 19.2 and 19.3 at the same time.</p>
</div>
<div class="paragraph">
<p>While porting Quarkus to GraalVM 19.3,
we hit several regressions, some due to Quarkus not doing the right thing (we fixed them), some due to GraalVM regressions (we are working hand in hand with the GraalVM team to fix them).
The next micro bugfix release of GraalVM is planned for mid-January, so any workaround had to come from Quarkus and by writing substitutions.</p>
</div>
<div class="paragraph">
<p>Even if it wasn&#8217;t pretty, the end result was solid enough that we decided to ship CR1 with GraalVM 19.3 support.</p>
</div>
<div class="paragraph">
<p>And, yet, our 1.1.0.Final is back to GraalVM 19.2.
It was a hard decision, believe us, especially with all the work invested to get things ready for 1.1.
So why this step back?</p>
</div>
<div class="sect1">
<h2 id="we-dont-want-to-break-our-promise"><a class="anchor" href="#we-dont-want-to-break-our-promise"></a>We don&#8217;t want to break our promise</h2>
<div class="sectionbody">
<div class="paragraph">
<p>One of Quarkus promises is that the ecosystem works equally well on any JVM and as GraalVM native image executables.
And you can build native images with no hassle on your side.</p>
</div>
<div class="paragraph">
<p>A number of issues were deviating from this line:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://github.com/oracle/graal/issues/1927">a concurrency issue striking randomly</a> made the native image build fail sometimes</p>
</li>
<li>
<p>The Neo4J extension and more generally the Neo4J driver support no longer works in GraalVM 19.3: <a href="https://github.com/oracle/graal/issues/1995" class="bare">https://github.com/oracle/graal/issues/1995</a></p>
</li>
<li>
<p>a couple of Apache Camel Quarkus integration tests were no longer able to work in native image mode either due to <a href="https://github.com/oracle/graal/issues/1971" class="bare">https://github.com/oracle/graal/issues/1971</a>.
While we could have lived with the latter, it also means it could happen to any of your applications.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>With these regression, we were already on the fence and already had taken some remediation (see below).
But we found another one that is core to Quarkus promise.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rss-memory-usage-regression"><a class="anchor" href="#rss-memory-usage-regression"></a>RSS (memory) usage regression</h2>
<div class="sectionbody">
<div class="paragraph">
<p>After the 1.1.0.CR1 release, we got reports that our RSS usage numbers at startup were not as good as before.
RSS measures the resident size of the process i.e. all the memory consumed by the process.</p>
</div>
<div class="paragraph">
<p>Our measures show Quarkus 1.1 with GraalVM 19.2 at 14MB after first request/response is served.
And GraalVM 19.3 bumped it to 63MB.
Because memory consumption for Quarkus is a core value, we decided to hit the revert button and take more time.</p>
</div>
<div class="paragraph">
<p>Investigations are happening between the Quarkus and the GraalVM team to remediate this.
If you are interested in knowing more about it, see <a href="https://github.com/quarkusio/quarkus/issues/6136">the Quarkus issue</a> and <a href="https://github.com/oracle/graal/issues/1984">its companion GraalVM issue</a>.
As soon as we get to the bottom of this one, the path to Quarkus on GraalVM 19.3 will be cleared.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="so-now-what"><a class="anchor" href="#so-now-what"></a>So now what?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Well, first, be prepared to downgrade your GraalVM installation to 19.2.1 for the upcoming 1.1.0.Final.</p>
</div>
<div class="paragraph">
<p>We are full steam to bring GraalVM 19.3 support in our next release (and hopefully GraalVM JDK 11 support too).
The concurrency issue is already fixed in GraalVM master, that lets us with the low-level issues.
Our goal is to help the GraalVM team understand and fix these issues and get all of this backported to GraalVM 19.3.1.</p>
</div>
<div class="paragraph">
<p>But more fundamentally, we do not want that to happen again: discovering these late in the game is not fun.
To be able to catch these issues earlier, we are setting up a set of CI jobs that will check that the whole Quarkus ecosystem (core extensions + quickstarts + Camel extensions + other external extensions) plays well with GraalVM master.
This is a bit challenging as it&#8217;s (GraalVM) master on (Quarkus) master on (Apache Camel Quarkus) master, but that&#8217;s the only way forward.
We have the CI job testing our QuickStart suite with Quarkus master and GraalVM master already.</p>
</div>
<div class="paragraph">
<p>We also plan to add some RSS usage checks to this CI pipeline.
Funny story, we had a different CI job that was testing RSS but its report failed with a NPE.
🤦.
Murphy when you hit us.</p>
</div>
<div class="paragraph">
<p>We hope you understand our cautious stance and the planned delay by a month or so.</p>
</div>
<div class="paragraph">
<p>In the meantime, a brand new Quarkus version is coming with a lot of exciting stuff so be prepared!</p>
</div>
</div>
</div>
              
          </div>
          <div class="width-12-12"><div class="share-page">
  <a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/why-graalvm-19-2/&title=Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why" rel="nofollow" target="_blank" title="Share on LinkedIn">
    <img src="/assets/images/share-page/icons_social-linkedin.png"/>
  </a>
  <a class="share-twitter" href="https://twitter.com/intent/tweet?text=Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why&url=https://quarkus.io/blog/why-graalvm-19-2/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on Twitter">
    <img src="/assets/images/share-page/icons_social-twitter.png"/>
  </a>
  <a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/why-graalvm-19-2/" rel="nofollow" target="_blank" title="Share on Facebook">
    <img src="/assets/images/share-page/icons_social-facebook.png"/>
  </a>
  <a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/why-graalvm-19-2/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
    <img src="/assets/images/share-page/icons_social-reddit.png"/>
  </a>
  <a class="share-email" href="mailto:?subject=Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why&amp;body=Delay in GraalVM 19.3 support - planned for Quarkus 1.2 - here is why https://quarkus.io/blog/why-graalvm-19-2/" title="Share via Email" >
    <img src="/assets/images/share-page/icons_social-email.png"/>
  </a>
</div>
</div>
        </div>
      </div>
    </div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
